/**
 * 
 */
package info.pello.games.libgdx.pong;


/**
 * World
 * @author Pello Xabier
 * Clase que representa el mundo del juego. Un mundo compuesto
 * por paredes laterales, una pala en la parte de abajo y una pared
 * en la parte de arriba. Y una pelotilla que va y viene.
 */
public class World {
	private PongGame pongGame;
	private Pelota pelota;
	private Pala pala;
	private Pala pala2;
	private int puntos1 = 0;
	private int puntos2 = 0;
	
	public World(){
		initialize();
	}
	
	private void initialize () {
		pongGame= new PongGame();
		pelota = new Pelota();
		pala = new Pala(4,0);
		pala2= new Pala(4,14);
		puntos1=0;
		puntos2=0;
		
	}
	
	/**
	 * update
	 * updates world status
	 * @param delta
	 */
	public void update () {
		
		pelota.posicion.add(pelota.direccion.x*0.01f, pelota.direccion.y*0.01f, 0);

		// Toca la pala? ¡para arriba!
		if (pelota.posicion.x > pala.posicion.x && pelota.posicion.x <= pala.posicion.x + 2 &&
				pelota.posicion.y <= 0.5f && pelota.posicion.y > 0) {
			pongGame.golpeArriba();
			pelota.direccion.y = pelota.velocidad;
			System.out.println("Palazo : pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
			
		} 
		
		// Toca la pala superior por abajo
		if (pelota.posicion.x > pala2.posicion.x && pelota.posicion.x <= pala2.posicion.x + 2 &&
				pelota.posicion.y >= 13.5f && pelota.posicion.y <15) {
			pongGame.golpeAbajo();
			pelota.direccion.y = -pelota.velocidad;			
			System.out.println("Choque pala arriba pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");


		}
			
		if (pelota.posicion.x < 0.5) {
			pelota.direccion.x = pelota.velocidad;
			System.out.println("Choque izq pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");


		}

		if (pelota.posicion.x > 9.5) {
			pelota.direccion.x = -pelota.velocidad;
			System.out.println("Choque dcha pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");


		}
		
		if (pelota.posicion.y < 0) {
			System.out.println("Cayó pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
			pongGame.seFue();
			puntos2++;
			pelota.posicion.y=7;
			if(puntos2 ==10){
				System.out.println("Victoria jugador 2");
				puntos1=0;
				puntos2=0;
			}
		}

		if (pelota.posicion.y > 15) {
			System.out.println("Subio pel(" + pelota.posicion.x +","+pelota.posicion.y +") pala (" + pala.posicion.x +","+pala.posicion.y +")");
			pongGame.seFue();
			puntos1++;
			pelota.posicion.y=7;
			if(puntos1 ==10){
				System.out.println("Victoria jugador 1");
				puntos1=0;
				puntos2=0;
			}
		}

	}

	/**
	 * @return the pelota
	 */
	public Pelota getPelota() {
		return pelota;
	}

	/**
	 * @param pelota the pelota to set
	 */
	public void setPelota(Pelota pelota) {
		this.pelota = pelota;
	}

	/**
	 * @return the pala
	 */
	public Pala getPala() {
		return pala;
	}

	/**
	 * @param pala the pala to set
	 */
	public void setPala(Pala pala) {
		this.pala = pala;
	}

	public Pala getPala2() {
		return pala2;
	}

	public void setPala2(Pala pala2) {
		this.pala2 = pala2;
	}

	public int getPuntos1() {
		return puntos1;
	}

	public void setPuntos1(int puntos1) {
		this.puntos1 = puntos1;
	}

	public int getPuntos2() {
		return puntos2;
	}

	public void setPuntos2(int puntos2) {
		this.puntos2 = puntos2;
	}

	public PongGame getPongGame() {
		return pongGame;
	}

	public void setPongGame(PongGame pongGame) {
		this.pongGame = pongGame;
	}
	
}
